﻿using System;

namespace Games.Sudoku
{
    class Data
    {
        private static string[] VeryEasys = new string[] {
            "579326804263148759418759236637281495952473168184695372391862547846517923725934681579326814263148759418759236637281495952473168184695372391862547846517923725934681000000000111111111111111111111111111111111111111111111111111111111111111111111111规则1/3：一行之中数字不可重复。请点击空白方格填入对应的数字",
            "524789136067124859891536724935241678782693415146875293679452381458317962213968547524789136367124859891536724935241678782693415146875293679452381458317962213968547011111111011111111011111111011111111011111111011111111011111111011111111011111111规则2/3：一列之中数字不可重复",
            "798431625304826971216759348923514786845697213671382594569178432132945867487263159798431625354826971216759348923514786845697213671382594569178432132945867487263159000111111000111111000111111111111111111111111111111111111111111111111111111111111规则3/3：一宫格中数字不可重复",
            "390682715708594632650713894289365147143279568576148329861427953437951286925836471394682715718594632652713894289365147143279568576148329861427953437951286925836471000111111000111111000000000110111111110111111110111111110111111110111111110111111提示：依次按照行、列、宫格的顺序，逐步排除，即可得到唯一解",
            "623091045579046138401503629762184593138925467954367812216759384395418276847632951623891745579246138481573629762184593138925467954367812216759384395418276847632951000000000000000000000000000111111111111111111111111111111111111111111111111111111提示：如果输入错误，会显示为粉底红字。点击“清除”按钮，即可清除对应方格的数字",
            "921637854780421693304985127092513476513764289640892531038159762159276348276348915921637854785421693364985127892513476513764289647892531438159762159276348276348915000111111000111111000111111000111111000111111000111111000111111000111111000111111提示：点击“笔记”按钮，可以在“做笔记”和“填答案”2个状态间切换",
            "657910082039264705412578930204836157760129348381745629946382571508491263123657894657913482839264715412578936294836157765129348381745629946382571578491263123657894",
            "604893175793561842015724369340619258280305914051482637138247596469108723572936480624893175793561842815724369347619258286375914951482637138247596469158723572936481",
            "824357910359401278167802345973206154215734869048915723782649500536128407491073682824357916359461278167892345973286154215734869648915723782649531536128497491573682",
            "950370481437185269816209357628437190793061842541928730264793518300612074109854603952376481437185269816249357628437195793561842541928736264793518385612974179854623",
            "874561239092783001630924807157230496043106508286490173728609314305847962469012785874561239592783641631924857157238496943176528286495173728659314315847962469312785",
            "103240756794056182265080094329864071657192008841573620478915263930027810012638947183249756794356182265781394329864571657192438841573629478915263936427815512638947",
            "890361450635492701014785090002016308008237549370854126953648217426179035780523064897361452635492781214785693542916378168237549379854126953648217426179835781523964",
            "017805029804319506539726401361472908205901637970060002750194063490238715183057294617845329824319576539726481361472958245981637978563142752194863496238715183657294",
            "071982546945613008260745139780426301010537802500100467897204613134869270002301980371982546945613728268745139789426351416537892523198467897254613134869275652371984",
            "079000001080329570350714680843105726761240895025670413690430158038561947010087362479856231186329574352714689843195726761243895925678413697432158238561947514987362",
            "410608000958107463627093500580070014241986375736014928804230056102845000395761042413658297958127463627493581589372614241986375736514928874239156162845739395761842",
            "900576214600308075510249683063824500205793461470105320006001039800637150351002746938576214642318975517249683163824597285793461479165328726451839894637152351982746",
            "150800476070526019980417503210940657067050901540070208031004790408035162720069384152893476374526819986417523213948657867352941549671238631284795498735162725169384",
            "009036741005048960000097205300960178196804050857321694408710530060403800573602419289536741715248963634197285342965178196874352857321694428719536961453827573682419",
            "350247690726081400098650002073009200000408730040705981987302504165074300234096807351247698726981453498653172873169245519428736642735981987312564165874329234596817",
            "739001456615094328482006910006903204000452601000108573000309162960200835003600709739821456615794328482536917156973284378452691294168573547389162961247835823615749",
            "271805049453209710900417005308070004100940302549100806812750003734690500095000020271835649453269718986417235328576194167948352549123876812754963734692581695381427",
            "370020010625070300401386705000800401134200006860104209503600900912048563706093080378925614625471398491386725259867431134259876867134259583612947912748563746593182",
            "045300860090000534830060972080053017417080653060047200070200040050030726126500398745329861692718534831465972289653417417982653563147289378296145954831726126574398",
            "610000007008630092932054001021040760004820913359000008507900026203070050106580370615298437478631592932754681821349765764825913359167248547913826283476159196582374",
            "018007940290810560304600100003901200109070000725000301502309400006108005801705029618537942297814563354692187483951276169273854725486391572369418946128735831745629",
            "000578904850902301967014080030080040740005090590201708400803019300000457609000000123578964854962371967314285231789546748635192596241738475823619382196457619457823",
            "009003216010065497700001008190000042800040050453000001040780123000014060630052874589473216312865497764291538197538642826147359453629781945786123278314965631952874",
            "020834001080170203901520708003750004070360090560040300040680130009000480010493007627834951485179263931526748293758614174362895568941372742685139359217486816493527",
            "009713250030802060008504300003957120014200730520300980751400600000070800086130000649713258135892467278564319863957124914286735527341986751428693392675841486139572",
            "028000109001009002700060084412000090000090421080000365190003756070050213253070048628547139541389672739261584412635897365798421987412365194823756876954213253176948",
            "000080000000020879090706000205037060007410290340008510030071006060842035574690100723189654156324879498756321215937468687415293349268517832571946961842735574693182",
            "000957382000623541000184700004805000005062000000401600700300260420500903650000410146957382879623541532184796364895127915762834287431659791348265428516973653279418",
            "180090020240000138300200400900351806800740500005800900001504269500030001600107004187493625249675138356218497972351846863749512415862973731584269524936781698127354",
            "001030074000000050400210980200400068890000340740060510620050190030080020100920835951638274382749651467215983215493768896571342743862519628354197539187426174926835",
            "308000052006070900047520000160050097030907046705400030601030075500006023400700000318694752256371984947528361164853297832917546795462138681239475579146823423785619",
            "000720059062053070005061000600080010700102500203600004120009000507000060408270190341728659862953471975461328654387912789142536213695784126539847597814263438276195",
            "030106000928300060060800070300001000490700030100039502850000620607500010200600750734126895928375461561894273385261947492758136176439582853917624647582319219643758",
            "600040357007310800804200901000000670700402009000790520900127030000080000420900006612849357597316842834275961289531674753462189146798523965127438371684295428953716",
            "000003050850070004702050100000067005080091602075000908000030789007002501500010003196243857853176294742958136219867345384591672675324918421635789937482561568719423",
            "006002000400097100900060004600004003300079210000138070004785000020410090500903000716842359432597168985361724671254983348679215259138476194785632823416597567923841",
            "840365010950700080010000200605010704000000060001000350300000100000089673090040020842365917953721486716498235635812794279534861481976352368257149524189673197643528",
            "712006000006208001804700000003000270009000006001507930000050093040670000060009080712436859536298741894715362653941278479382516281567934127854693948673125365129487",
            "008100007070000800429000100000000504010004030900307000802600001007005200301020760568192347173546829429738156236981574715264938984357612852673491697415283341829765",
            "060105970090300804010007000000000069000074500780010040000703050000600027005040000364185972597362814812497635451238769623974581789516243946723158138659427275841396",
            "006008092000020000004000301002050010780009000140002006470060108261000570030000000356148792917326485824597361692453817785619243143782956479265138261834579538971624",
            "008540000200007000000300006009100052170000603060000000600801504000050800501000390718546239236917485954382176849163752175298643362475918697831524423759861581624397",
            "954000008600003904300000000002800000000302009000050007010060300240005000090104020954627138628513974371948562762891453485372619139456287817269345246735891593184726",
            "004100290320000070000000000700000450809200030410000020000007000030000009070046180584173296321698574697452813762839451859214637413765928148927365236581749975346182",
            "270601000004809007960000000000000060040008105610540003380000400500000090000005002278631549154829637963754218835912764749368125612547983387296451521473896496185372",
            "080025100000000008450310060010009830000000002000006000030000050000160020600400007986725143123694578457318269712549836365871492849236715234987651578163924691452387",
            "013000290006000080000070100081906000000317000090000000000040000000108050705000020813564297976231485254879163481956372562317948397482516128745639639128754745693821",
            "960000001150000030002800700090500006200000917000000000700002000600004873000006009967325481158497632342861795891573246235648917476219358713982564629154873584736129",
            "020300000000000502009084000900432000470800000080000010095020030001600000000010700827365941364197582159284367916432875473851629582976413695728134731649258248513796",
            "070100002004000060030000000000060890200000400910300007300204000100700900000050000879136542524879163631425789743562891258917436916348257387294615165783924492651378",
            "700058100002300080000000000010200006000000491506904000600107009870000002000006000793658124452391687168742935914273856237865491586914273625187349871439562349526718",
            "000900080170000004400020000800070100000000040060030009002000830001760000003050060326914785175386294498527613839475126517692348264831579652149837981763452743258961",
            "007500000920300001000000078000008039200000010590040000000600803000000000071000520167589342928374651345162978716258439284936715593741286452617893839425167671893524",
            "087500060000000002054000030130070000020051009000080040000406070000000003800700090987523164613847952254169837138974625426351789579682341392416578765298413841735296",
        };
        private static string[] Easys = new string[] {
            "050000020400206007008030100010000060009000500070000090005080300700901004020000070157498623493216857268537149514329768689174532372865491945782316736951284821643975",
            "040000900002000700500020000850000406600010800000004001060700000900008300430605008746153982192486735583927614851372496624519873379864251268731549915248367437695128",
            "000200105040900380080405000000007050730000000000001260000008030005000009000090400697283145541976382283415796164827953732659814958341267429768531875134629316592478",
            "040807500007000340000500100200000810030000700000690002000780904080210000300009000149837526567921348823546197296374815438152769751698432612783954984215673375469281",
            "900002000200000800004030000050009030000070500703800002890000007007020010600008093971582364236194875584637129458269731129473586763851942892316457347925618615748293",
            "000600200598200030002000087204100000009506000300000000000400090000325010007090020743618259598274631612953487264189375879536142351742968125467893986325714437891526",
            "000900000703005009000704002000050024000600507300102000006000030089060001004000060452986173763215489891734652617859324928643517345172896176428935589367241234591768",
            "000000708500402013004310920000500800000007000600083000041006000005201090000050007213965748598472613764318925437529861182647359659183274341796582875231496926854137",
            "032000401080000050000000000500016030000400207109200000970000806000004000200030005632985471781342659495167382527816934368459217149273568973521846856794123214638795",
            "000019300007200608904000000000007000000890430000300002508720000000130040040000060682519374157243698934678521823467159715892436496351782568724913279136845341985267",
            "000008037540007000000560100904000008000001040210609000003000000600000850020800400162498537549137286837562194974325618356781942218649375483956721691274853725813469",
            "000090280040000059300080406100002060050004800000975000460207000805000000700000000517496283648723159392581476174832965953164827286975341469217538835649712721358694",
            "000000008000500060000006450930000100840007030017000046000090600500070009000180002653741298428539761791826453935468127846217935217953846172395684584672319369184572",
            "003000564000030000910000000000000090000306000096702800000000005700615000620007008283179564567234981914568327352481796871396452496752813149823675738615249625947138",
            "340280000050000000000007040800000004007010005021500906000003020000900060290000070346289157752134698189657342865392714937416285421578936618743529574921863293865471",
            "030000000024073089800004000900005010000308070008007904300402006000600090000000020539816247624573189817924365973245618146398572258167934391482756782651493465739821",
            "000039000000000096300000080000600700721490003089000400007040001006010070000203000162839547478152396395764182543681729721495863689327415857946231236518974914273658",
            "369050010000007830010600000080500403001000500790000000000400008000006900000105070369258714254917836817643259682571493431869527795324681573492168128736945946185372",
            "003000500009561070400000900000050000000700804067302000100009000070200000008030000713924568289561473456873912942158736531796824867342195125689347374215689698437251",
            "400000300020100000903600401000010000080070000030000280000400629000009100060003004418597362625134798973628451796812543284375916531946287357481629842769135169253874",
            "000000000003000540000064800026008030018000700004009600000700400007502000590000001849351267163287549275964813926478135318625794754139628681793452437512986592846371",
            "100000382600000005007000000000060070009005000060074298000000064080000000005300100154697382692438715837512649428963571719825436563174298371259864286741953945386127",
            "010002630060005007000080001000000023400003005605000008000610082000000090080040000518472639269135847743986251897561423421893765635724918954617382376258194182349576",
            "070000000000700260000400708000030400095008000010000050620000080700049100300065000172986345984753261536421798867532419495178623213694857629317584758249136341865972",
            "200050000030000700069000800092007040300080090001060000100040000600315002000000070217458369835691724469273815592137648346582197781964253128749536674315982953826471",
            "450007006000804009000000000009000007020000000000700910062000100013005800007200065451937286276814539398526741189653427724189653635742918562378194913465872847291365",
            "000000010005006270900704030000000600560900704470100000050002300000007000090300000786239415345816279912754836239478651561923784478165923154682397623597148897341562",
            "000027600007095000000800000000203000105000009600014003002008410000400002700000038581327694347695821296841375479253186135786249628914753962538417813479562754162938",
            "000020001720038600000000740009000000000903000010047030200075090601009000800000000956724381724138659138596742369251874487963215512847936243675198671489523895312467",
            "000100500900300001608000000000003405000074900800000200004000806200040070100200000437169582952387641618452793769823415321574968845916237594731826283645179176298354",
            "080700500000000000209000010000000026302050090100640800050400700008003000000006003481739562536214978279865314845397126362158497197642835653421789928573641714986253",
            "003008507004160200000030060078000030000059000000001900080000000020007000019043000263498517794165283851732469978624135142359876536871924487516392325987641619243758",
            "080403000400000500005060073000070000006000309000300210000000001000002050130008060789453126463721598215869473321974685876215349954386217542697831698132754137548962",
            "200000009630040200104000500000930000050080000002070408060000807070000090000004010285316749637549281194827563748932156356481972912675438469153827571268394823794615",
            "000007040009000015000000390000000000028001000010074060001040700070290058006000400153987642769432815842165397437629581628351974915874263291548736374296158586713429",
            "001000370003000109040000000060782000020005001000001000700010800890650000300007000281596374673248159945173268169782435427935681538461927756319842892654713314827596",
            "006700000020040073000050000040100682800000005000000000008900000605001000003600790356712849921846573784359261549137682837264915162598437478923156695471328213685794",
            "004500000098000062021000000000060070080090000000400100000032001100000004039006780674529813598317462321684957412865379783291546956473128845732691167958234239146785",
            "000003020180094700000820100600000005903000000750081000000030000006205004090100000569713428182594763347826159618942375923657841754381692271439586836275914495168237",
            "400005008000608009050903071006800002020300010070000400139000000580000000000002000497125368213678549658943271346817952925364817871259436139486725582731694764592183",
            "000700005003009000000000104408300200070028000005000087042080000000030009690047000814762935753419862926853174468375291179628543235194687342981756587236419691547328",
            "800300000067401003002070600000904700020085300000000000008502010000000004030000800854326179967451283312879645183964752426785391795213468648532917271698534539147826",
            "607038050000004001000070000000090000080000905000703006010005004000400039002600080697138452238564791451972368576891243183246975924753816719385624865427139342619587",
            "002094015300000204400030090009017400000009080000600070080001700000070021000940000862794315397185264451236897629817453573429186148653972285361749934578621716942538",
            "001004050600020070000806100005008200040070003020900000000000508000059004000201000291734856683125479457896132375468291149572683826913745962347518718659324534281967",
            "100000060050400080340690010010050090607080000500000700400000002009000053000020900172538469956412387348697215214753896697281534583946721435869172829174653761325948",
            "083000700040200060000000400000000698760800004100500000010004003600100000004002000283469751541278369976315482435721698762893514198546237817654923629137845354982176",
            "005004000403000200006080009070006050000009020600010300009000005004030801300000000825694713493157286716283549978326154531479628642518397189762435264935871357841962",
            "030000512040000300002000000085000090006000230090048007000800040800093600100002000938764512641285379572139864785321496416957238293648157329816745857493621164572983",
            "000000000960000020012900000000008000008300004100000507000004060000063091009100270734826159965431728812957346476518932258379614193642587321794865587263491649185273",
            "300500107500900208100000009005080000000030002600000000000050903002090800007040005389524167574961238126873459215487396748639512693215784861752943452396871937148625",
            "005900000000070000370608900206000018000000700000000053050000090030510006000780020625934187948175632371628945296357418583241769714896253857462391432519876169783524",
            "003700500800509040000068000000400000180000060032000080301005000020801090060002000693724518817539246254168937576483129189257364432916785341695872725841693968372451",
            "000000000000001030400090070090580300070100005010006000002005400007000009030008510721364958968751234453892176296587341374129685815436792182975463547613829639248517",
            "091500080005600009000003560040000020102860700000090008720000000009000070086000002691542387835671249274983561948137625152864793367295418723418956519326874486759132",
            "020701000500000008400800090000000000003104000800009006094080027001060009050000000928741653517396248436825791149658372263174985875239416694583127781462539352917864",
            "000009050000106000602030000107020009403090000090000008006070040000000030038005070871249653349156782652738194187524369463891527295367418526973841714682935938415276",
            "240000003000670800006000400005000000400015000608000070301000000000007009920031004249158763513674892786923451135796248472815936698342175361489527854267319927531684",
            "800010000000097041006400000000000050760005000000000032092080006000000010005300000849513267523697841176428395231869754764235189958741632392184576687952413415376928",
            "200710050000008060000020400004000000000000807060035000000081000730400020000900006246713958319548762875629413184297635523164897967835241692381574738456129451972386",
            "000780000000006840100000003030400567002030000010000000000007000006000128500900400294783615357196842168542793839421567742635981615879234481267359976354128523918476",
            "091000008000048600000730090802073001010000050000004000007100006530000000086000000491625378723948615658731294862573941314896752975214863247189536539462187186357429",
            "002000000074000020903500010000006052060000080007020300000040900000709000000850003512694837674318529983572614139486752265937481847125396751243968328769145496851273",
            "000000100400093000003000000005204700000080509026070004132000900009000080050000307598642173417893652263157498985214736741386529326579814132768945679435281854921367",
            "091000000020005060080000400000082000078400100400603700000201000000000001003000508691847253324195867587326419136782945278459136459613782865271394942538671713964528",
            "096000400050002703000000068900400380004530006000000001040060000008040070603000000896317452451682793237954168915426387784531926362879541149768235528143679673295814",
            "407290000306000000008050000000900015000032008000000070710000023000820600000100000457298136396471582128356497673984215541732968289615374714569823935827641862143759",
            "400030600000001040200000500001000708000070002309000000008104000050200010000500000487935621596721843213648579621459738845376192379812465938164257754283916162597384",
            "008102900004000000000450013200030045000205008600000000000000072009607050000000300538172964124396587976458213281739645497265138653841729865913472349627851712584396",
            "905080000207030000430200760000000582500600040000000000000070020000009004700150600965784231217936458438215769679341582521698347843527916196473825352869174784152693",
            "000200000050001390003000007005000000760050100000439000800060009070000040000040203687293451254671398913584627435716982769852134128439765842367519371925846596148273",
            "005003400002904010000080070010000095000070001006030200058200000094000000070400000185723469762954813439186572817642395523879641946531287658297134294318756371465928",
            "000702800540009060000000010470000900920010000000006030097000400060000500005000002619732845542189367738645219476358921923417658851296734197523486264871593385964172",
            "600003025804000000020008601000090050900301006000400700006070200300009000000800000619743825854162379723958641438697152975321486261485793196574238387219564542836917",
            "520006400010009000900000300004600050700200063300800100080010009000000040000008600527386491813459726946172385194637852758241963362895174685714239271963548439528617",
            "004020600003000810670045002030006000000400007000010086000007000000500090100860000914328675523679814678145932231786549869453127457912386385297461746531298192864753",
            "080000006900000000100500483000900008000040060700030005008000000052070001000410500583724916946381257127569483261957348835142769794836125318295674452673891679418532",
            "000000040020000960340890000501040006000950020007000000106000000030002005000080001619723548728415963345896712591247836463958127287361459176539284834172695952684371",
            "900060002008009000200007490070003000010004900600000500740006000000700006000000210937465182458219763261387495874953621513624978629871534742136859185792346396548217",
            "000205000700000901800600007090007600400000000030002000000001700900000053603800000319275864765483921842619537198537642427168395536942178254391786981726453673854219",
            "010690000005700000790003060501000009000030500000050034042000070000000010907024000213698745465712893798543261531487629624931587879256134142365978356879412987124356",
            "031004005008300200000501800040002000000405030060000087759000000406000100000000000631824975578396214924571863843762591197485632265913487759148326486237159312659748",
            "060000010080000003700009804000915080070008030009000000003407000600500090100000060462873519985124673731659824324915786576248931819736245293467158647581392158392467",
            "000000279300070100040800006470090000006080000809005000010046008002100700000000000168534279325679184947812356471293865256481937839765412713946528692158743584327691",
            "000005000100007000000108063070609000002000700500400080060000320298000007050080000486935271135267894927148563873629145642851739519473682761594328298316457354782916",
            "003007080001090647000000205005703000900006701000080000000074000600200000107000000563427189821395647479168235245713896938546721716982354392674518684251973157839462",
            "000080002500000061600000739800700003100400000090650010000300000240060000078000000739186452524937861681245739852719643163428975497653218916372584245861397378594126",
            "000601000000045900090280000500070190700000000030900580007000450006102000000700300823691745671345928495287631562478193789513264134926587217839456346152879958764312",
            "400000000610079005050000100002064009900020307000003001000008400830000006000000090487251963613479285259386174372164859961825347548793621796518432835942716124637598",
            "200000007010005000500000008030042000050800003080700010600000000900270001000103900298614357317985426564327198136542789752891643489736215671459832943278561825163974",
            "200500090083006001000000045700009300000008069000000000900000000640000150001025080264571893583946271197832645716459328432718569859263417925184736648397152371625984",
            "000020040000000900000300070003040000600050093970080006010005200060007050800600000731529648586471932294368571123946785648752193975183426417835269369217854852694317",
            "051030900060500080040000005000057000790060000000003400000600802600000050103000070851732946362549781947816325436157298798264513215983467574691832629378154183425679",
            "090080000001040000008302600060100409009000000700050001070608302000000800000200000397586124621749538458312697563127489219864753784953261175698342932475816846231975",
            "000070409004030200008009000003010004520000608010000000600000500000300900900506000356172489194638275278459163863215794527943618419867352682794531745381926931526847",
            "400070090000004000500600007007900012260700040000000050000000080000400520043001000426173895739854261518692437387945612265718349194236758952367184671489523843521976",
            "000200000602090508001050000075034001006000870010000063004000600000700000000006059587261934632497518491853726875634291346912875219578463154329687963785142728146359",
            "200000030050000902000007000076000009400600003080000500000000800060089400007105020248951637751863942639427158176534289425698713983712564314276895562389471897145326",
            "400000300003100704520000000902004000000005800000000060030050400001740600600008003419587326863129754527436918952864137176395842384271569738652491291743685645918273",
            "250001000300000090700600500000000081000040007000005920000107000800000703400009000258391476364578192791624538945762381182943657673815924536187249829456713417239865",
        };
        private static string[] Normals = new string[] {
            "100004300000007000003050016000800103010000000750000002002300095009400000000006080187264359695137824243958716926845173314729568758613942862371495579482631431596287",
            "060000087001900500045000000030400200200098000000027060000060000100000050000052079962541387371986542845273916637415298214698735598327461759864123126739854483152679",
            "000600000000000041003080000008027100050000032000001400500003890946070300000002000294615783865739241173284569438927156751846932629351478512463897946178325387592614",
            "801007060002060800730405001000790000000000000000108040070000410190000005008000006841927563952361874736485921384796152517243698269158347675832419193674285428519736",
            "040650000000000000079000004000900002053000049007203600000007000001360000095081700148659237526734981379128564864915372253876149917243658432597816781362495695481723",
            "200000006090000450810070000004025000000007560020008900000000000032010000000832104243591786697283451815674239764925318389147562521368947178459623432716895956832174",
            "040023090000050060700000308062091500000000000000000036100000000090004052000005689648123795931758264725469318362891547487536921519247836156982473893674152274315689",
            "080000206000300000001400809045000000000002007830000000000000080006019004050007600483195276962378415571426839245731968619582347837964521794653182326819754158247693",
            "103009060000050000200008740002095800000000001065000000400020000506940000000000390143279568687354129259168743312495876874632951965817432498723615536941287721586394",
            "600200050000050001089060000948300000000000200100000005007000000000007063050149070671293458423758691589461327948325716735916284162874935817632549294587163356149872",
            "600004003040083000170000800800070246006500000200000001000000000709860000000002600628714593945283167173956824851379246436521789297648351562437918719865432384192675",
            "200000037600300000300070100180024000000180400000000000059003000060000001000590008245861937671359284398472165186924753937185426524637819859713642763248591412596378",
            "000000000000040006906000235008600010060700080100080020430000070009310004200000000752963148813245796946178235528639417364721589197584623431856972679312854285497361",
            "200063000400007892050000006009600000700040005800002040000050001000000300090000250278963514436517892951824736349685127762341985815792643683259471524178369197436258",
            "000950008843000000000000070006190000000007801200080500600000000000000020090800437762954318843271956519638274386195742954327861271486593627543189438719625195862437",
            "004890500000007000023000090000010000419305000002700003000060834005000972000000000174893526956247381823651497387416259419325768562789143791562834645138972238974615",
            "863000000002800000009005020400150000000000600000007095036780040200000100000300062863274951512893476749615328498156237357928614621437895136782549274569183985341762",
            "000000006000058000180000200020679008000005700050000004400010570700406039000000000572391486946258317183764295324679158691845723857132964468913572715426839239587641",
            "010605040000000000090020810600008100009000008000406230368209000000010004021000000813695742254781396796324815642938157539172468187456239368249571975813624421567983",
            "004063200000000000008020390900000120000000508012030000050000080000750902021680000194863275273945861568127394935478126647291538812536749459312687386754912721689453",
            "400000060000200000002107805801300900090000000007000520000000008200080600070041000419538762785264139632197845821356974596472381347819526163725498254983617978641253",
            "009000056020000000300004000080076009000100002600300010000000000570000830460800700819237456724615983356984127281576349935148672647392518198753264572469831463821795",
            "002308600140000009008000007000200000900000000005000013000406020004050100600730080792348651146527839538691247417263598983175462265984713879416325324859176651732984",
            "006010729000920000000000300000100008040080260203000000002000007000003604930008000856314729371925486429867315697132548145789263283546971562491837718253694934678152",
            "000001000000360000476090000080007002050200900000030070000010240061000800008002700835721469912364587476598123689147352753286914124935678597813246261479835348652791",
            "045000000003600400000002600004000010000000008810005026580006030000380000006704000645973182723618459198542673364829517952167348817435926581296734479381265236754891",
            "000009005030810000102000608950600800000000000000000362080000004000540000200780100867239415534816297192457638953624871621378549478195362385961724716542983249783156",
            "100400600200100000500070090000000908000064700000000050620003004430850060009001007178439625296185473543276891362517948985364712714928356621793584437852169859641237",
            "174000000000200800050007000500630000000102040010070000040000060000000027003028094174985632639241875852367419527634981398152746416879253241793568985416327763528194",
            "000037000500000000061002005309005740000700980000004300000000000902060000614000500298537614543186297761942835389625741425713986176894352837251469952468173614379528",
            "007000003300010050860409000008092004500700000700008091051060009900000030000000020127586943394217658865439217638192574519743862742658391251364789976821435483975126",
            "000007004030000697800360000000030001018070960070000300082000000000000706090400080169527834235148697847369152926835471318274965574691328682713549453982716791456283",
            "000000056890000000000000700005068007001950000000070009000000078030500000708230160312794856897615234564823791925368417471952683683471529259146378136587942748239165",
            "000003000070400500200080003908000000000040000000051900017000020000020804602005790185273649379416582264589173958362417731948256426751938817694325593127864642835791",
            "000270301000900000009400050000300800061500000002710009005000903700090420080000000458276391176953248239481657597364812861529734342718569625147983713895426984632175",
            "100000000000017002679300040000600020000001680500003071090200000006050000700000009182465397345917862679382145817694523923571684564823971491238756236759418758146239",
            "020800090060019058000030000050098370097504006002000000000080900000000064000400720125847693763219458489635217654198372397524186812376549546782931271953864938461725",
            "061000004000007000030001508020006340800700609000000000500000006070010450040090800261859734485367192739241568127986345853724619694135287518473926972618453346592871",
            "500009840800000006001030250900080000000000000040316000000060080056000037090007005537629841829154376461738259915482763683975124742316598174563982256891437398247615",
            "480000000001006000006000000000015079890700300500002008000003080030040510050001090485329167371486925926157834643815279892764351517932648164593782739248516258671493",
            "006900300400005060000000098010000000000700005500046010708500400000000030190008007856912374479385162321674598912853746634791285587246913768539421245167839193428657",
            "100002060070900005050006140200000080090000000014000900500683000300090000000000014138452769476931825952876143263749581795218436814365972541683297327194658689527314",
            "630040000001080000400200000000007001702000603186020000063004070000009380000500004637945218921386457458271936345697821792158643186423795263814579514769382879532164",
            "070403200000000000603290700000000500001058002304000000000000076002065401000000000175483269928576134643291758286947513791358642354612987519824376832765491467139825",
            "503690010080000000000000000300500000040071500006000000000100400000005093904020807523698714681457329497213685378562941249871536156934278735189462862745193914326857",
            "003050040000001003582000060006900024804600000090000000000002007060835090000000500173256849649781253582349761756918324824673915391524678935162487467835192218497536",
            "000000000007600058800095230054010000203000040000900000008130020400700003905000000529873461347621958861495237754316892293587146186942375678134529412759683935268714",
            "000000000070000916360200080000009000000603200021480003004000000107000602096000541815946327472358916369271485643729158758613294921485763534162879187594632296837541",
            "840007902009000050070001080018000000006000200394000071020508004103400000000090000841657932639824157572931486218743695756189243394265871927518364183476529465392718",
            "000007500350900000040500020080003904139700000000000000800009070000000640002006030218647593357921486946538721785213964139764258624895317863459172571382649492176835",
            "000001000000007694927006000000000470001000009630000020079000000100080005005600708456391287318527694927846513592138476781264359634975821879453162163782945245619738",
            "010060900068700020000040070000170043100805000003000000007900000001000004000050609714562938368791425925348176286179543149835267573624891457916382691283754832457619",
            "700005600000003029000800007501000000020490000807000004004560000000002040002000970789245631415673829263819457541726398326498715897351264934567182178932546652184973",
            "010900000605200000000175306031000800000019000008000025090620007500000004800000000317946258645283791289175346431562879752819463968437125194628537523791684876354912",
            "000010984100000007038000000000000001000080070713950000000028090046000000900340800627513984194862537538479162289734651465281379713956248371628495846195723952347816",
            "006030080809040003002080010000008501010024030048000200000000497000000000000209000156932784879145623432687915293768541617524839548391276321856497985473162764219358",
            "002007000000000035040010002030600000000000040000480796000000010608700950970140000162357489897264135543819672439671528786925341251483796324596817618732954975148263",
            "800030400000400000903001000000016078002080000050000000005000089070004060000009001861532497527498613943671852394216578612785934758943126435167289179824365286359741",
            "000000800010043076040007000005400060000076503600002000000218009430000080000500000967125834518943276243687951385491762124876593679352418756218349432769185891534627",
            "020784900000000000060000020480000059090001837000000000000506041009002008000400200123784965957263184864915723481327659592641837736859412278596341649132578315478296",
            "000000900000020064002000000007005040000600000904000108200100000100070630630040500716458923593721864482396715827915346351684297964237158275163489148579632639842571",
            "100000000009005670805940000020700000000006100004301057500000062080000000000039000172683549439215678865947231321758496758496123694321857513874962987562314246139785",
            "000100004700039015000004000640050907010000006000000200209000000000690000005047020923165784784239615156784392642851937517923846398476251279518463431692578865347129",
            "040000050003000080600305000002503900400800000008000342000017000871050000200000005149782653523461789687395421712543968436829517958176342365217894871954236294638175",
            "700109000000000005300070610600000000000000540100090780000904800206000004004062300765129438491683275328475619653748921879231546142596783537914862286357194914862357",
            "360700005050000040079000000000000000000850307000094068007509086000042000000600100364721895851963742279485631638217954492856317715394268127539486986142573543678129",
            "001030000090050080500007241300405190000000007080000000000802000042760008000000000471238965296154783538697241327485196914326857685971324753842619142769538869513472",
            "000100380850304070000700600206000000003870200700000000007450060100000002000010840679125384852364971431789625296541738543876219718293456927458163184637592365912847",
            "000000000290000006068904000004602039610079240000000000903006000000407003000800060437561892291783456568924317874652139615379248329148675953216784186497523742835961",
            "008170200000900000300008607094016000000000020100800400005701090000009300060200000648175239572963184319428657294316578836547921157892463425731896781659342963284715",
            "204700000000000050007034001509100007042000600000080300020000070010000800400050009254718963831629754697534281589163427342975618176482395923841576715396842468257139",
            "000800030532900000007004000003010400021005060000000005000086709900003080006000000149857236532961847867234951753618492421795368698342175314586729975123684286479513",
            "000029350690805200400000000548000000000000060300540090000001000800600410060700080187429356693875241452163879548916732719238564326547198974381625835692417261754983",
            "503006900002300000000000800000760000700002030200400010006270000000003008009018724573186942682394175914527863435761289791852436268439517846275391127943658359618724",
            "600400200000020030940003005000030900001000020069004000080006300517000000000070150673458291158927436942163785825631947431795628769284513284516379517349862396872154",
            "001200009080000000000001005862700000000050300040060008000000816300005002000000040651273489284596137937481625862734951179852364543169278495327816318645792726918543",
            "090000502005240000000700080050800000000000090632005100060500000000070400041300200796183542815249763324756981159837624478621395632495178267514839583972416941368257",
            "061920000000000050005000008000500000070069000903100520000000090304600000009800763861925374237481659495736218618542937572369841943178526786213495354697182129854763",
            "000000000004250810906010002600000900000040130080000204702900000000307009000004000128476593374259816956813742641532978297648135583791264732965481415387629869124357",
            "140000003000079500030000000508000000000004070000620010080007300000002000000940602147258963862379541935416728528791436613584279794623815289167354456832197371945682",
            "000000000000700192062809700340250009090040650000000000008092000600000000017500000974125368853764192162839745346257819291348657785916234538692471629471583417583926",
            "000000001030005400806102007000700900070006003008000070009000084040007025300000000457389261132675498896142537513728946274916853968453172729531684641897325385264719",
            "000040005005790000000000020028000003090083001000000040037609100010400057000800600381246795245798316679315428128964573794583261563127849437659182816432957952871634",
            "005080020000000300004000601000300000040560000320001090200009785000000030008705006135486927962157348784923651571394862849562173326871594213649785657218439498735216",
            "050000049000201600709000000824300000000400102000060000240000000006000700000079006152736849438291657769845213824317965693458172571962384247683591916524738385179426",
            "100056030000320700005740000007000412000000000004005006749000000000000093360010000172856934496321785835749261957638412613274859284195376749563128521487693368912547",
            "201060009000004003063001005086090007510000000000000000007050030000300460000600001271563849958274613463981725386492157519736284724815396647158932195327468832649571",
            "502100800006028000010050007058000060000002001600700000000000079280009640000005000542137896376928514819654327158493762793562481624781953435816279281379645967245138",
            "000400870930800000006000109000205430200000000000000000002004007080301046300070001521496873937812564846537129179265438268143795453789612612954387785321946394678251",
            "900000000050087000084510009042008010000060400308100000000000030091600050020000004937426185156987342284513769642798513519362478378145926465279831891634257723851694",
            "007000300002810000004002500900740002041500008000000070080000000000056000500200067857964321632815749194372586968743152741529638325681974486137295279456813513298467",
            "701000000090040000004800769002400000000960040000000013530090400000000000108236000781629354695347182324815769912453678873961245456782913537198426269574831148236597",
            "007609003000078000000000020860000001090400300020013790000000000000092004080500000217649583635278419948135627863957241791426358524813796472381965156792834389564172",
            "010004089003907400000000000000000604700020000600031500100000230040000000000005706517264389283917465469853172351798624794526813628431597175649238846372951932185746",
            "108000600000000750002001000091500800000030002503096000000000400000640080080270006178953624639482751452761938791524863846137592523896147265318479317649285984275316",
            "400300000000000709075080006006070098704050000000800002050000000002000930000740010469327851813465729275981346326174598784259163591836472157693284642518937938742615",
            "000080012004035680090000300500700000000004000000358000080000206020000040947200008753486912214935687896172354568719423139624875472358169381547296625893741947261538",
            "700000060006084507010260003032050001008903000490010000000005800000000070040000002783591264926384517514267983632758491178943625495612738267135849851429376349876152",
            "032900070001000000000430009206000000010700300000040020600000000000526034007300500532961478941287653768435219296153847814792365375648921653874192189526734427319586",
            "000006005308009017209000000000480000030000000702590000076000300000001702800000090147836925368259417259714863615487239934162578782593146476928351593641782821375694",
        };
        private static string[] Hards = new string[] {
            "000063502000700000007215009610020807002000030005080600900000005000000080006000700194863572523749168867215349619324857482576931735981624978632415351497286246158793",
            "008074005004080160000500000080000040000000507920005000040000900000708001106200800618974235754382169239516784581697342463821597927435618842153976395768421176249853",
            "000000003000730010009600000040000021592000000070900008700500089004008700000000300267451893485739216319682475648375921592814637173926548726543189934168752851297364",
            "069000010000400009000001005000200000000030000038006071700560004003000057010008903469385712581472369327691845976214538154837296238956471792563184843129657615748923",
            "000000000200095100500400000000000304008017200000000500051800070040001003090032400984126735267395148513478629675289314438517296129643587351864972742951863896732451",
            "000000000325400000000019530700000000000007400650020013086050094001000000000090681169573842325486179478219536713645928892137465654928713286751394931864257547392681",
            "000050070009700100010000068000030501005000230026000000004082000000500000700063000842651379639748125517329468478236591195874236326915847964182753283597614751463982",
            "001003200030014070080070000000050300074000000005000604000000000000200530002800019751983246239614875486572193918456327674328951325791684893145762147269538562837419",
            "000105804000000002400080000000000100070090000000021530240300070001057020093400000326175894859634712417289365532746189178593246964821537245368971681957423793412658",
            "500000000008026740006984000000078009090100800703000100000001006000200500005030000524713698938526741176984352651378429492165837783492165349851276867249513215637984",
            "900000108030000045651000000100000200802190700000300000006002400000050000000804092924573168738216945651489327173648259862195734495327816586932471249751683317864592",
            "500060000003000070000000002010070600009800000000042890040600005006900100000051907572164389183295476694738512815379624429816753367542891941687235756923148238451967",
            "035000002000000950620000700070002140001000600000500020800030500007008009352040000735196482184327956629485713573962148241873695968514327896231574417658239352749861",
            "004000000000394000000102970200010000740050312038000000300700090400021730070000080914587623627394158853162974295413867746958312138276549381745296469821735572639481",
            "103000000000003050008060070005326000000040008001005009000000000042500700030000020193257684674813952258964371985326417327149568461785239519672843842531796736498125",
            "406093000083007005000000000060000700000320001094000000030700082007109000500000010456293178983417265712865349261948753875326491394571826139754682627189534548632917",
            "000000900200640000035100074000000000478000000000090023000000000000017009600908140146573982287649351935182674392765418478231596561894723719426835854317269623958147",
            "008400070900000310000000000000001000000070068705090000300760051059300200800000000128439675974685312563127849286541793491273568735896124342768951659314287817952436",
            "140500000080006000003700008020000003007000006600904201000025000030070080000460500142583769789246315563791428924617853317852946658934271876325194435179682291468537",
            "900700000023060001640032000000000046000047100000005000009050000001903000308000029915784263823569471647132985792318546536247198184695732279856314461923857358471629",
            "060203000700000008009710003007000000000000014800031570000092080400300702000050000164283957735649128289715643617524839593876214842931576376192485451368792928457361",
            "920000000300000500000780000003060800000200147000000006040005060000013000109000070926354718387691524514782693493167852658239147271548936842975361765413289139826475",
            "000009204700000000030000007090200075003760002820100000000000000004003809005800060681579234749326518532481697496238175153764982827195346368957421274613859915842763",
            "007010030004000200060083004000000000001030009002561400000806100000007680000000002287415936314679258965283714736948521451732869892561473523896147149327685678154392",
            "987050400000080005010000020000000000000594060500000839300907002740200000000010004987352416432186975615479328129638547873594261564721839351947682748265193296813754",
            "000000090320510000000830050000054000980000000000000705760000009004000012800406000158647293326519478479832156637254981985761324241983765763125849594378612812496537",
            "000023009000009800042085100000000000000001970309000050710000000000150006600034000861723549537419862942685137174598623256341978389276451715862394493157286628934715",
            "000000923900008000004000000060009000410500000000002048000080792000290500007600010186754923925318467374926185762849351418563279539172648653481792841297536297635814",
            "905200000630009520000000060008900035402030700000800000000001000000300206020060907915286374634179528287453169178942635492635781356817492569721843741398256823564917",
            "000000800032050490500804003203900000000007009400003700010000346900000080000000007647139852832756491591824673273985164186247539459613728718592346964371285325468917",
            "140000000006007049059083060000006070002000080090000405000000103800002000000071090148629537236157849759483261584916372312745986697238415975864123861392754423571698",
            "010000000700100802560000730000904000406000300000008600080000007650820000009035000312687459794153862568249731831964275476512398925378614183496527657821943249735186",
            "009040270000900000000000500080000005020087401000400000007800006010024700805079000659148273172953684438762519784291365326587491591436827247815936913624758865379142",
            "001709000080140000000000098504690000000005000009000032047300020050000000000074080621789453985143276473256198534692817712835649869417532147368925358921764296574381",
            "600090005000003600290000000000700420060201700000000080085900040400030000002400008617894235548123679293675814351789426869241753724356981185962347476538192932417568",
            "100300000000000004000270030000000008400000070907008401720000095006050000840600002174365289632819754589274136253741968418926573967538421721483695396152847845697312",
            "067800024008009000000270000000000000103708000050004307301906800800000140000000009567813924238469571914275638789632415143758296652194387371946852896527143425381769",
            "200190000000000000000020780000000000000206048071509060000000007085040006930650020258197634749863512316425789862314975593276148471589263624931857185742396937658421",
            "068002300400060000009100058904000007000000009010200006000000070000930005000428100568792341431865792279143658954681237682374519317259486823516974146937825795428163",
            "000000000000250601025003907046108000000030765300000010070000002800000000034900000761894523983257641425613987546178239218439765397562814179386452852741396634925178",
            "794000000000040305500000000010300090069205800005060004000002000100050007000000680794523168681947325523186749218374596469215873375869214836792451142658937957431682",
            "003204500000000094200710000000000006060100000050028300002800070000030900980006000893264517176385294245719683321947856468153729759628341632891475517432968984576132",
            "974003021860000000000000600000530000000001340000409507408702000002000000000008014974653821861297435325184679247536198596871342183429567438712956612945783759368214",
            "069000280005003004310000060002870509000000000106409000000002430041600007000000000769514283285763194314298765432876519978351642156429378597182436841635927623947851",
            "000000010060030008428000007601004000030700120580000000000003054005801900700000000359487612167932548428156397671524839934768125582319476816293754245871963793645281",
            "703050400000000790005006000076503900000009030000008204080060021160400000000000000793851462618324795425796183276543918841279536359618274584967321167432859932185647",
            "009020000080400712007000085700000000003509100000100840900036500000000000000010490159728634386495712247361985718642359463589127592173846924836571871954263635217498",
            "040000200500000030700840000000057902320008071000000006000000608861900000000500000648135297512679834793842165186357942329468571475291386954713628861924753237586419",
            "000002800020730060000600700910000000000043050030010004100000003375000000000000027763152849829734165451689732914265378287943651536817294192576483375428916648391527",
            "127400000004800000000002501400050000000000003078009105300000002500780004000001600127465839954813276863972541431658927695127483278349165386594712512786394749231658",
            "500000038100320000060000000700234000000080050300900004030690075400015009000000600527461938148329567963578142715234896694187253382956714831692475476815329259743681",
            "000060000004009000100000307000000005006480200000100700001320450460000000030000920327861594654739182189542367748293615516487239293156748971328456462915873835674921",
            "000600003312090000090007008000001480104500000079300000000782000000000106950000000785614923312895764496237518563921487124578639879346251641782395238459176957163842",
            "080040000206070000070003265063052408002000000000890020000000000000000016000020850581246937236579184479183265163752498892364571745891623657918342928435716314627859",
            "827000000050040000000000006200630170000050000006700300000009017030180090009002003827516439653947821941823756298634175374251968516798342485369217732185694169472583",
            "800004005003029100040000028010000000000060409000100560700000000000007000002540630829614375573829146641753928316495782257368419498172563734986251165237894982541637",
            "090060054200094300860003100000829000000000000000700019080000900003000000002351008391268754275194386864573192136829547729415863458736219587642931613987425942351678",
            "000150269000090000000804500800406000009080000500000020047900000600000005900000173478153269356297814291864537832476951719582346564319728147935682683721495925648173",
            "000900004000045819000003700007500008000000000000084596070000920840000000005102000158976234736245819429813765967521348584639172213784596671458923842397651395162487",
            "806200430000000001000430890000015000000000080061004700400057000000000008305000009896271435734589621152436897283715964547693182961824753428957316619342578375168249",
            "000000650030000200000610408000029000003100000284000009760000000000008701300902000841297653639845217527613498156729384973184562284356179768431925492568731315972846",
            "815000020009000000000000078000096200000358000050240001000060802400000090127900000815679423749832156632415978374196285261358749958247631593764812486521397127983564",
            "000000300010000700380407006900010080175000000000300070000006020057094003290000004764185392512963748389427156936712485175648239428359671841536927657294813293871564",
            "603147000010300000700020300000000003000703029900000508000000000089500000007489100693147852218365794754928361475892613861753429932614578346271985189536247527489136",
            "600000370000201000204000000069100008000000090030007000091050400000000009005036800618549372953271684274368951569123748147685293832497165791852436386714529425936817",
            "096000000000304092000000007510470920000000010400009000060050800000000000000086431196725348758364192342891657513478926689532714427619583264153879831947265975286431",
            "500003004000501020034800007001609000020000500009000030000300406980100000200000000512763984897541623634892157751639248328417569469285731175328496986154372243976815",
            "036200009020015080000000730009100000002906008000080000005000000000700100000023460836274519927315684541869732489137256712956348653482971275641893364798125198523467",
            "507910000006007020000000001000000308000300006700020040002083500103450060004000000547912683916837425328546791269174358481395276735628149692783514173459862854261937",
            "006000000045900200907520000010350000000000913600000000000090704001704520200600090826471359145963287937528641419357862752846913683219475568192734391784526274635198",
            "000029810090000004000003000004000700700001005600205040540300090001080000320000108463529817297168534815743962154836729732491685689275341548317296971682453326954178",
            "000005061490800070000079000000000040120300000084100500000500780961280000000000000872435961496821375315679824539768142127354698684192537243516789961287453758943216",
            "006000070020700500105002364000690400030000008000051000000000003007810200400006000946135872328764591175982364251698437639427158784351629862549713597813246413276985",
            "000900007805700040309042080400000278900000000000001006000030500030200004560000000641958327825713649379642185413569278986327451257481936794836512138295764562174893",
            "008070041000020509200100300720000063600000000004500000000009050841000000000004100568973241413628579297145386725481963689732415134596728376219854841357692952864137",
            "046210009090007100570306004400000000000700000050900420600000000030000012000060075346218759298547163571396284413625897962784531857931426625173948734859612189462375",
            "000018690570090000000002003460800000000007000000004280010000000800050040000000179324518697571396428986472513469825731258137964137964285713649852892751346645283179",
            "010000030009000005004957610000000003000004170270010008693700000000008700000060000516482937729136845384957612461879523938524176275613498693745281152398764847261359",
            "003050000210078000000403020001500002648020000007000080000092170900000006000000300483251967216978435759463821391586742648729513527134689865392174934817256172645398",
            "005003004620000500900050060000042000060100050000000000004000602050200170000038000175623894628479513943851267591342786462187359837596421784915632359264178216738945",
            "004030106020000000000006800060000004300001000080000500007902008005007000000810930954738126628194375713526849561283794379451682482679513137962458895347261246815937",
            "701580000000003001008400000000090400850000069100000500000700030400051000630800000791582346546973281328416957263195478854237169179648523912764835487351692635829714",
            "000000000500000782704002050000953000000000000030600008080000103009860040076020000823576914561439782794182356248953671617248539935617428482795163359861247176324895",
            "500080036000000000420036009059040100700000000001009087605200900080700000000003020597481236316972854428536719859347162763128495241659387635214978182795643974863521",
            "050800000006000007400009180000162030000400008002005001000000000005790003007021069159876324286314957473259186894162735561437298732985641918643572625798413347521869",
            "010070458340000000075000010090087001000000003600310080700148005504009020000000000216973458349851276875462319493287561128596743657314982732148695584639127961725834",
            "002060000040000850070842000000001300300006040000070200009400100800000009000005003182563974643719852975842631467251398321986547598374216739428165856137429214695783",
            "070100009006000000000000500000930005009450280500062030090007040080006001040090000873125469956374128124689573462938715739451286518762934395817642287546391641293857",
            "050732009308000000000041500200004813190000750000000000000007000000000321003010000456732189318569247972841536265974813194683752837125694521397468789456321643218975",
            "000000107060090503078003049400000000090005000007802000249050000000000000006701300923584167164297583578613249485936712692175438317842956249358671731469825856721394",
            "001002503000900006000763490072500000350000000009006000000005300000800000007240005961482573743951286528763491172594638356128749489376152894615327215837964637249815",
            "000000307000000009504903000035200010000001902020490000000000000250084003073100058892516347317842569564973821935268714746351982128497635481735296259684173673129458",
            "000000030000090001430000008020480600000000005000069070000000040507008000809016000198654732752893461436721598925487613674132985381569274213975846567348129849216357",
            "008030090009100008000000200080020600900015030700006045630580000000003700000000000158632497269147358374958216581324679946715832723896145637581924495263781812479563",
            "410000000000400200005672100030000000000005048504007000900200010300000590000004006412593687673481259895672134136849725729165348584327961967258413348716592251934876",
            "840000000700000302050000007030050000001200470600000001000003000000871953000000780842317695796485312153692847437159268581236479629748531978563124264871953315924786",
            "000490050040600190002038000000000500000000046007500820650080703700000000080050400176492358348675192592138674461829537825317946937546821659284713714963285283751469",
            "000000000000800061000054207008000400090700002300001900080040000040620003950308000519276384274893561836154297768932415491785632325461978683547129147629853952318746",
            "000000070200000005005670080086059000001800000000042900700000031009306847000000000614285379278934615395671482486759123921863754537142968762498531159326847843517296",
            "096000000000000407004209000000000040001006073300500006000014005058900600000700030196347852235681497874259361627138549581496273349572186963814725758923614412765938",
        };
        private static string[] VeryHards = new string[] {
            "080000600000400009070000805400000000030060090000720100093200064810300000000005000389157642526483719174692835451839276237561498968724153793218564815346927642975381",
            "020000008050460090000590000000070009100080006000000200040700300800050920501000040924137568357468192618592734462371859139285476785946213246719385873654921591823647",
            "000020007050600000320075004000000030060280070400000051039560000004000008000000000641329587957648123328175694792451836165283479483796251839564712574912368216837945",
            "006074090009800000300200800000000070057680000080000200108042600000130000400000050826374195549816723371295864614923578257681349983457216198542637765139482432768951",
            "000002000000540000050009010790000058010000760005006040370900800000000030400003190948162573123547689657839214796421358814395762235786941371954826569218437482673195",
            "003000000200590403690408000000300059050000000000107000000004108060000030801000090413672985278591463695438721127346859354289617986157342532964178769815234841723596",
            "000000169003100020950000000000090070520370000000208900082000006000000000030957004248735169673189425951624837814596372529371648367248951782413596495862713136957284",
            "000526040800001000000000002004963000000000050090040700513000000000000000079000431931526847827431695645879312754963128362187954198245763513794286486312579279658431",
            "000000000100340050004000100500000010010090703000008062307900000650800400009500300735186294162349857984257136576432918218695743493718562347921685651873429829564371",
            "070200590000000000000000082709801600000000000000064100021390054600000000000005920476238591218549367953617482739821645164953278582764139821396754695472813347185926",
            "000203400000080760000000002001000030350040000000700290580000000000100000013092058865273419129584763437916582971625834352849176648731295584367921296158347713492658",
            "030002000008003509000009780000508300007210000010000004074086902690000000000000007935872146748163529261459783426598371357214698819637254574386912692741835183925467",
            "902000000000000000430012005700009000000070051005306200010000000000004023500000074952637418681495732437812695728159346346278951195346287214783569879564123563921874",
            "005400000080009070032600800096000005023000910007000003008010090000570300200000000965487132184329576732651849496132785823765914517894263358216497649578321271943658",
            "200000030060000070005076000700802006900007012000940003590000000000009200038000005279185634461293578385476129713852496954367812826941753592618347647539281138724965",
            "000807006000000284000096300016030700430000050000080000004258000700000000005070049543827916679315284281496375816534792432769158957182463194258637768943521325671849",
            "030010004200000096810070030000600900050000002000001450000007000500028060007164000935216874274835196816479235483652917159743682762981453628597341541328769397164528",
            "700000000900000006060352000800509000000000000004610500000000900500987040000020831743896215925741386168352479816539724359274168274618593482163957531987642697425831",
            "007182900000004500000000000013200040000000000026073100081090060700000408000000205657182934138964572942537681813259746579641823426873159281495367795326418364718295",
            "004073000098502074000090000000007003400001000009800605000000290010005000003080007154673829698512374372498156861257943435961782729834615587346291916725438243189567",
            "741000000003580001000000002800002000000070090060090000000200016005000000002607038741926385923584761586731942839462157254178693167395824378259416615843279492617538",
            "000000004000130090420000008000000000360200000791080402008017300040800000006050000619728534875134296423569178582941763364275981791386452258617349147893625936452817",
            "510603900002000030300000800000000000000740200000180050040009700060000008031000620518673942672498135394521876756932481183745269429186357845269713267314598931857624",
            "000000071100604005002000000204000780000080000070006530600730000080000020000005800546892371138674295792153648254319786963587412871246539629738154385461927417925863",
            "007060002200008450543200000000007260080092300300000004900006500000000001000010070897564132216938457543271986159347268784692315362185794971826543438759621625413879",
            "007900050000601000260000019000000040320090000405700300103405006002000001000000700817942653539681472264357819671238945328594167495716328183475296742869531956123784",
            "309004600007000000400000000086002009004350002000400100000000050000708001230000400319524678867931524452867913586172349194356782723489165971243856645798231238615497",
            "500000324690704580000000090900000000000000000310506009000600030780250000050008000578961324692734581431825697925473168864192753317586249249617835783259416156348972",
            "205190000060040002009000000040030050000006030000207060600900840000000001830000000275193684368745912419682375146839257927456138583217469652971843794368521831524796",
            "000030000701009050080100690207000000003090000100087230009000506000400700000070003926735841741869352385124697257341968863592174194687235479213586632458719518976423",
            "000009070150000000000006003602001000030600000008240900004300005900000700000000236346589172157432689829176453692751348431698527578243961214367895963825714785914236",
            "000000005468900000300402000040806970000000000207000000001004700000007560025000300172368495468951237359472186543826971916743852287195643691534728834217569725689314",
            "078000000096710000000000050009400000200086530800000000000000070000035621150004900378542196596718342421369857639457218247186539815293764963821475784935621152674983",
            "000000008905300200048000003060008700002604805080902000000009004600050000020800900736245198915387246248196573364518729192674835587932461853729614679451382421863957",
            "000000000379000000048063100783002000002007310600000007000000001007108900000029430165974823379281654248563179783412596452697318691835247924356781537148962816729435",
            "860204000050600000004058009000010030070300200000000800005003006490000000002107005867294153259631748314758629946812537178365294523479861785923416491586372632147985",
            "104080000000300010029060000006105090000000000000029760005000400000000006090204807134982675568347912729561384476135298912678543853429761385716429247893156691254837",
            "670090000000000008010600430200000000000038500801240000400000106000003700009060053678394215394512678512687439245976381967138542831245967483759126156823794729461853",
            "609800013300600500000000000000000000007006091901025300000000108740010000050090060679852413382641579415973826824139657537486291961725384293567148746218935158394762",
            "002003014000000560600000007900400200000000008135020000000567000000001092701039000592673814473182569618954327987416253264395178135728946829567431356841792741239685",
            "108020500090008000000005040910800007005002000000016300420000030000700002850000001148627593592438176736195248913854627685372914274916385427561839361789452859243761",
            "000079005910000000005600004104080020060900030200000000000000002030020070070034800346279185917458263825613794194385627768942531253167948481796352539821476672534819",
            "320058000000407000070016008000000074008000901007600502600000000910000200003020009321958746869437125574216398136592874258743961497681532682179453915364287743825619",
            "000094250008260100400005000004370000802000600010000000000006070006010540081050000163794258578263194429185763654378912892541637317629485245936871736812549981457326",
            "000000008200090000600310500000400010007000900040002000008000000006031070402608003791526438235894761684317529829465317567183942143972685318749256956231874472658193",
            "005100070000802000004053610000004000062935001100000000000000200087400000200080003835146972671892354924753618598214736762935841143678529459361287387429165216587493",
            "209000800000008000340700002060001700000900010027800040000000901700060030000005000219643875576218394348759162964521783853974216127836549632487951795162438481395627",
            "000008090720000000000060058075003000060000009003090060000170000107000046040520000516738492728945613394261758975613824461852379283497561632174985157389246849526137",
            "036000000500000007000006890003900014610004000020070300000000000000830206100020900836749152591283647247516893783962514619354728425178369372695481954831276168427935",
            "009071000050006000003400000080007060100008004000050310070019500000000000094000700649371852851926437723485196482137965135698274967254318276819543518743629394562781",
            "800004170006000000000702030090100007000397042000060000600000000002000001009200504823654179746931258951782436498125367165397842237468915684519723572843691319276584",
            "092540000000000000076001000004080100000000630300002800000003040500700080001069020192548367435976218876231495624385179958417632317692854289153746563724981741869523",
            "000800007074000060095071004402003000000000026010000005000000001608102000049008000361824597274395168895671234482563719537419826916287345723956481658142973149738652",
            "000905200010000000200007894000800000307150008400020631006038700000000000800000000784965213913482567265317894621843975397156428458729631146238759539674182872591346",
            "000050000000000290503008000010007020907400001302006540000000000000009600079200850261954783748361295593728416416537928957482361382196547824675139135849672679213854",
            "700000008002004056050000000000080000000002610097100000000950400230000700014060000763529148182374956459618372321486597548792613697135284876953421235841769914267835",
            "070000080910040000000300006025006974160000000007000000000004508001820000040035020273561489916748235854392716325186974169473852487259361732614598591827643648935127",
            "000000030006000800050400006000010004000370000009060718001000000570030609068500070842956137916723845753481296627819354185374962439265718291647583574138629368592471",
            "309020400800000007000500000000000800000001030704006001000000000007960500080305692319728465845613927672549183163257849528491736794836251956182374237964518481375692",
            "020010900000060070800034026004007008730000000008900005000000000000690000075001300627518943453269871819734526594127638731856294268943715186372459342695187975481362",
            "000003600034780010509010020070904000090800000008000430705000002060000500000000001127593684634782915589416327376924158491835276258671439715369842862147593943258761",
            "000700200700000030003281000300016000250070000006400000000000486092000050460005009189753264725964831643281597378516942254379618916428375537192486892647153461835729",
            "000000000120007004800005960000000000900000072008364590700508240000000000500090006657943128129687354843215967415729683936851472278364591761538249392476815584192736",
            "000108700001000000000047090004095806000000004300014000703200500900000603085000000496128735271953468538647291124395876859762314367814952713286549942571683685439127",
            "905010000060003100040800090070000601310000800000000000620090000000480000007200054935714286268953147741826593479538621312649875586172439624395718153487962897261354",
            "019200000000040000000000281000000500007605010090070006700060100083000009002007030619238754258741963374956281826413597437695812591872346745369128183524679962187435",
            "460100000000007000000000230005962000800000029300040007570006080000090000084010060469123758238657491157489236715962843846371529392548617571236984623894175984715362",
            "000040000080010023000307160600400000007000940000000701009001270025000010000009000312648597786915423954327168691473852537182946248596731469831275825764319173259684",
            "001003027000427150000000308090000000000004000007580000004150003080002004219000005561893427938427156742615398893276541156934872427581639674159283385762914219348765",
            "000000004000005760007031000500080400000000008000640090601800500008300000072590000915768324834925761267431859526189437749253618183647295691872543458316972372594186",
            "010200000000400070400065029020681530000000000070000008000030005005000092780020006617293854592418673438765129924681537856372941371954268249136785165847392783529416",
            "000000000090074600000000801407002013053000002000013000000000000060900504200465000614538297892174635735296841487652913153849762926713458549387126368921574271465389",
            "008005100004270006020000040000000000700304605001867200000026000003100007000790000678435129134279586529681743346952871782314695951867234497526318263148957815793462",
            "059000800602900000300000020000001000000230785000008003000004006280000100406002090759423861612985437348167529893751642164239785527648913931874256285396174476512398",
            "940200000007000650008000019000603400004010005730009060000000000800097530000005008941256783327981654568374219185623497694718325732549861459832176816497532273165948",
            "000049000038000000100800074000030591500070000004900000050006000006000908300400700765249813438761259129853674872634591593178426614925387957386142246517938381492765",
            "017000068206000000040000000000608003075920080000070000000000304080067000400091000517239468236845917849716235194658723375924681628173549761582394983467152452391876",
            "090804001000072060308000000000009004009700000200050307040200900560000000007001000692834571415972863378615249756329184139748652284156397843267915561493728927581436",
            "420590000000000000001000504000060000012009003005008070067400900000200100000000846426597318539814762781632594374165289812749653695328471167483925948256137253971846",
            "005000300008053006200010000006900020000000863500000070700801002350600407000000000675289341148753296293416758486937125917524863532168974769841532351692487824375619",
            "000700012000300790009020000000004005100060000000087400024090003008000041500000000436759812852316794719428356987234165143965287265187439624891573398572641571643928",
            "000001008030000000060900500608300400240000000007010020000000090000580007000724065579231648134856972862947513618372459243695781957418326785163294426589137391724865",
            "018006200030840000006070000009032760370000020000000009050008006000000000700029050518396247237841695496275813849532761371964528625187439952418376164753982783629154",
            "000060000070402900000007840600074000300000000000095360510000000009100080032040501941568273876432915253917846695374128327681459184295367518729634469153782732846591",
            "003050080000004600900120007146005070800000000000000409285000000007000000000030210423657981751984623968123547146295378879346152532871469285419736317562894694738215",
            "000000005030079082620030001800000000000006090000300004004560038008020000070000420489612375135479682627835941843791256751246893962358714294567138318924567576183429",
            "000100000070006100005000083200000000007041305900020740000300000001470000040009008468153972379286154125794683254637891687941325913825746592368417831472569746519238",
            "907800000010070520000000000008100004000006000190580302009000700000062000030490008927835641813674529465219837658123974372946185194587362249358716581762493736491258",
            "002106004300000026000008100040010503060300000000084000020070005706800040001009000892136754314795826675248139248917563167352498539684217923471685756823941481569372",
            "000000009000024560900031000000700400090342000000000090700006302100000005008015040416587239873924561952631874581769423697342158234158796745896312129473685368215947",
            "007300000040007002203008005010073400000000709900600000000030050500000000006002017157329648648157392293468175815973426364215789972684531721836954589741263436592817",
            "000006400006310000000700106608000000000000001320000009090803200003604000000091508172586493846319752935742186618927345759438621324165879591873264283654917467291538",
            "005030007000080090200000508070002900800500000004070085100000000400360009300007204685139427743285691219746538576812943831594762924673185197428356452361879368957214",
            "006800030800000000300007500060100480000049103000000000009000027001002000007495000176854239852931674394267518965173482728649153413528796549316827631782945287495361",
            "000000380002080154094000000106003870080764000000000000000000000000005037360010400651472389732986154894351726146593872283764915579128643427839561918645237365217498",
            "000500300600007900050200064090002010000000000008610000970000002206070090000000450487569321632147985159238764394752816561894273728613549975481632246375198813926457",
            "000090005500000789100000000000000000090000240004500038000027600030001000002400390248793165563214789179685423327849516895136247614572938981327654436951872752468391",
            "000200003020050060608000000000008900000410007147000038070004000003090010002560000791286453324751869658349172235678941986413527147925638579134286463892715812567394",
            "820000070000400000300000200000900004760008000000007031000051300019000008050000010824693175195472863376185249532916784761348952948527631487251396619734528253869417",
            "840000000010060000002047000000301509000000370200008000000000040003009006060050130846935721715862493392147865674321589158496372239578614521683947483719256967254138",
        };
        private static string[][] Diffs = new string[][] { VeryEasys, Easys, Normals, Hards, VeryHards };
        public static MapData Get(int level, int index)
        {
            var list = level < Diffs.Length ? Diffs[level] : Diffs[0];
            var map = index < list.Length ? list[index] : list[0];
            return Get(map);
        }
        public static MapData Get(string map)
        {
            var datastr = map.Substring(0, 81);
            var mapData = new MapData();
            mapData.Datas = new int[9, 9];
            for(int r = 0; r < 9; r++)
                for(int c = 0; c < 9; c++)
                    mapData.Datas[r, c] = datastr[r * 9 + c] - '0';
            var fullstr = map.Substring(81, 81);
            mapData.FullDatas = new int[9, 9];
            for(int r = 0; r < 9; r++)
                for(int c = 0; c < 9; c++)
                    mapData.FullDatas[r, c] = fullstr[r * 9 + c] - '0';
            if(map.Length > 81 * 2)
            {
                var maskstr = map.Substring(81 * 2, 81);
                mapData.Mask = new bool[9, 9];
                for(int r = 0; r < 9; r++)
                    for(int c = 0; c < 9; c++)
                        mapData.Mask[r, c] = maskstr[r * 9 + c] == '0';
                if(map.Length > 81 * 3)
                {
                    mapData.Tip = map.Substring(81 * 3);
                }
            }
            return mapData;
        }

        public static int GetMax(int level)
        {
            var list = level < Diffs.Length - 1 ? Diffs[level] : Diffs[0];
            return list.Length;
        }
    }

    public class MapData
    {
        public int[,] Datas { get; set; }
        public int[,] FullDatas { get; set; }
        public bool[,] Mask { get; set; }
        public string Tip { get; set; }
    }
}
